/*
	
	MultiLevelLayoutPlugin for Cytoscape (http://www.cytoscape.org/) 
	Copyright (C) 2007 Pekka Salmela

	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU General Public License
	as published by the Free Software Foundation; either version 2
	of the License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.
	
	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
	
 */

package multilevelLayoutPlugin;

/**
 * Configuration class for the multilevel layout algorithm.
 * 
 * @author Pekka Salmela
 * 
 */
public class MultilevelConfig {
    /**
     * Constant multiplier used in calculation of repulsive forces.
     */
    public double C = 0.2;

    /**
     * Constant multiplier used in calculation of attractive forces.
     */
    public double A = 1.0;

    /**
     * Constant multiplier used in calculating the maximum movement allowed.
     */
    public double T = 0.9;

    /**
     * Parameter used to control the tolerance below which algorithm is
     * concidered to be converged..
     */
    public double tolerance = 0.01;

    /**
     * Minimum clustering coefficient that has effect to the layout
     */
    public double minimumCC = 0.3;

    /**
     * Multplier/divider to control the effect of the clustering coefficients.
     */
    public double ccPower = 3.0;

    /**
     * Flag indicating if clustering option should be used during layout
     * calculation.
     */
    public boolean clusteringEnabled = false;

    /**
     * Multiplier to control the natural spring length;
     */
    public double springLengthConstant = 4.0 / 7.0;

    /**
     * Should the mtree used to speed up calculation
     */
    public boolean mTreeEnabled = true;

    /**
     * Try to prevent (too) star like layouts
     */
    public boolean startLikeLayoutPrevention = false;
}